package com.example.lafritedechainee.bds;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

//CETTE BD N'EST PAS UTILISEE DANS NOTRE APPLICATION MAIS CELLE-CI POURRA EVENTUELLEMENT SERVIR
public class InstagramPicturesDB extends SQLiteOpenHelper {

	private static final String DATABASE_NAME = "photos.bd";

	public static final String KEY_ID = "_id";
	public static final String KEY_URL_T = "thumbnail";
	public static final String KEY_URL_S = "standard";

	private static final String SQLITE_TABLE = "photos";
	// private static final int DATABASE_VERSION = 1;

	private SQLiteDatabase bd;

	// 2 constructeurs de la BDD

	public InstagramPicturesDB(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
	}

	public InstagramPicturesDB(Context ctx) {
		// super(ctx, "villes.bd", null, 1);
		super(ctx, DATABASE_NAME, null, 1);
		bd = getWritableDatabase();
	}

	public String getBDDName() {
		return DATABASE_NAME;
	}

	// création de la BDD

	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("CREATE TABLE " + SQLITE_TABLE + " ( " + KEY_ID
				+ " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_URL_T
				+ " TEXT NOT NULL," + KEY_URL_S + " TEXT NOT NULL);");
	}

	// mise à jour de la BDD

	@Override
	public void onUpgrade(SQLiteDatabase db, int ancienneVersion,
			int nouvelleVersion) {
		// pour faire simple, on se contente de recréer la BDD en cas de
		// changement de version
		//Log.v("BDD", "reset");
		db.execSQL("DROP TABLE " + SQLITE_TABLE + ";");
		onCreate(db);
	}

	// réinitialise la BDD (pour tester + facilement)

	public void reinit() {
		if (bd.isOpen())
			fermeture();

		bd = getWritableDatabase();
		bd.execSQL("DROP TABLE " + SQLITE_TABLE + ";");
		bd.execSQL("CREATE TABLE " + SQLITE_TABLE + " ( " + KEY_ID
				+ " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_URL_T
				+ " TEXT NOT NULL," + KEY_URL_S + " TEXT NOT NULL);");
	}

	// fermeture de la BDD

	public void fermeture() {
		bd.close();
	}

	// ajout d'une Ville dans la BDD

	public long ajouter(InstagramPicture photo) {
		ContentValues valeurs = new ContentValues();
		valeurs.put(KEY_URL_T, photo.getUrl_thumbnail());
		valeurs.put(KEY_URL_S, photo.getUrl_standard());
		return bd.insert(SQLITE_TABLE, null, valeurs);
	}

	// mise à jour d'une Ville dans la BDD
	// non achevée car "ville" au lieu de SQLITE_TABLE, etc.
	public int miseAJour(InstagramPicture photo) {
		ContentValues valeurs = new ContentValues();
		valeurs.put(KEY_URL_T, photo.getUrl_thumbnail());
		valeurs.put(KEY_URL_S, photo.getUrl_standard());
		return bd.update(SQLITE_TABLE, valeurs, KEY_ID + " = " + photo.getId(),
				null);
	}

	// suppression d'une Ville dans la BDD
	// non achevée car "ville" au lieu de SQLITE_TABLE, etc.
	public int supprimer(int id) {
		return bd.delete(SQLITE_TABLE, KEY_ID + " = " + id, null);
	}

	// obtenir une Ville depuis son ID
	// non achevée car "ville" au lieu de SQLITE_TABLE, etc.
	public InstagramPicture getVille(int id) {
		Cursor curseur = bd.query(SQLITE_TABLE, null, KEY_ID + " = " + id,
				null, null, null, null);
		if (curseur.getCount() == 0)
			return null;
		else {
			curseur.moveToFirst();
			return curseurToPictures(curseur);
		}
	}

	// renvoie toutes les Villes de la BDD dans un ArrayList
	// non achevée car "ville" au lieu de SQLITE_TABLE, etc.
	public ArrayList<InstagramPicture> getPictures() {
		ArrayList<InstagramPicture> liste = new ArrayList<InstagramPicture>();
		Cursor curseur = bd.query(SQLITE_TABLE, null, null, null, null, null,
				"thumbnail, standard");
		if (curseur.getCount() == 0)
			return liste;
		else {
			curseur.moveToFirst();
			do {
				liste.add(curseurToPictures(curseur));
			} while (curseur.moveToNext());
			curseur.close();
			return liste;
		}
	}

	// renvoie toutes les Villes de la BDD dans un Cursor
	// non achevée car "ville" au lieu de SQLITE_TABLE, etc.
	public Cursor getVillesToCursor() {
		Cursor curseur = bd.query(SQLITE_TABLE, null, null, null, null, null,
				"thumbnail, standard");

		if (curseur != null) {
			curseur.moveToFirst();
		}
		return curseur;
	}

	// convertit le curseur dans sa position actuelle en une Ville

	private InstagramPicture curseurToPictures(Cursor curseur) {
		InstagramPicture picture = new InstagramPicture();
		picture.setId(curseur.getInt(0));
		picture.setUrl_thumbnail(curseur.getString(1));
		picture.setUrl_standard(curseur.getString(2));
		return picture;
	}
}
